#ifndef __M_UTIL_H__
#define __M_UTIL_H__
/*
通⽤功能类，与业务⽆关的功能实现
1. 获取系统时间
2. 获取⽂件⼤⼩
3. 创建⽬录
4. 获取⽂件所在⽬录
*/
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <ctime>
#include <cassert>
#include <sys/stat.h>
namespace dhylog
{
    namespace util
    {
        class date
        {
            public:
            static size_t now()
            {
                return size_t(time(nullptr));
            }
        };
        class File
        {
            public:
            static bool exists(const std::string& name)
            {
                struct stat st;
                return stat(name.c_str(),&st)==0;
            }
            static std::string path(const std::string& name)
            {
                if(name.empty()) return ".";
                size_t pos=name.find_last_of("/\\");
                if(pos==std::string::npos)
                {
                    return ".";
                }
                return name.substr(0,pos+1);
            }
            static void create_directory(const std::string &path) 
            {
                if(path.empty()) return;
                if(exists(path)) return;
                size_t pos=0,idx=0;
                while(idx<path.size())
                {
                    pos=path.find_first_of("/\\",idx);
                    if(pos==std::string::npos)
                    {
                        mkdir(path.c_str(), 0777);
                        return;
                    }
                    std::string parent_dir=path.substr(0,pos+1);
                    if(exists(parent_dir)) {idx=pos+1; continue;}
                    mkdir(parent_dir.c_str(),0777);
                    idx=pos+1;
                }

            }              
        };

    };
};
#endif